package hudson.plugins.emailext.plugins; import hudson.model.FreeStyleProject; import hudson.plugins.emailext.plugins.recipients.DevelopersRecipientProvider; import hudson.plugins.emailext.plugins.recipients.ListRecipientProvider; import hudson.plugins.emailext.plugins.recipients.RequesterRecipientProvider; import org.hamcrest.CoreMatchers; import org.jenkinsci.plugins.workflow.job.WorkflowJob; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.jvnet.hudson.test.JenkinsRule; import org.powermock.modules.junit4.PowerMockRunner; import java.text.MessageFormat; import java.util.Arrays; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; @RunWith(PowerMockRunner.class) public class RecipientProviderTest { @Rule private JenkinsRule j = new JenkinsRule(); @Test public void allSupporting() throws Exception { List<RecipientProviderDescriptor> descriptors = RecipientProvider.allSupporting(WorkflowJob.class); assertThat(descriptors, CoreMatchers.hasItem(CoreMatchers.isA(DevelopersRecipientProvider.DescriptorImpl.class))); assertThat(descriptors, CoreMatchers.not(CoreMatchers.hasItem(CoreMatchers.isA(ListRecipientProvider.DescriptorImpl.class)))); descriptors = RecipientProvider.allSupporting(FreeStyleProject.class); assertThat(descriptors, CoreMatchers.hasItem(CoreMatchers.isA(DevelopersRecipientProvider.DescriptorImpl.class))); assertThat(descriptors, CoreMatchers.hasItem(CoreMatchers.isA(ListRecipientProvider.DescriptorImpl.class))); } @Test public void checkAllSupport() throws Exception { RecipientProvider.checkAllSupport(Arrays.asList(new RequesterRecipientProvider(), new DevelopersRecipientProvider()), WorkflowJob.class); try { RecipientProvider.checkAllSupport(Arrays.asList(new RequesterRecipientProvider(), new ListRecipientProvider()), WorkflowJob.class); fail("Expected to throw exception"); } catch (IllegalArgumentException ex) { assertEquals(MessageFormat.format("The following recipient providers do not support {0} {1}", WorkflowJob.class.getName(), ListRecipientProvider.class.getName()), ex.getMessage()); } } }